package com.yanq.liancar.activity;

import android.content.Context;
import android.graphics.Bitmap;
import android.support.v4.widget.NestedScrollView;
import android.util.Log;
import android.view.View;
import android.widget.ScrollView;
import android.widget.TextView;

import com.tencent.mm.opensdk.modelmsg.SendMessageToWX;
import com.tencent.mm.opensdk.modelmsg.WXImageObject;
import com.tencent.mm.opensdk.modelmsg.WXMediaMessage;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import com.yanq.liancar.R;
import com.yanq.liancar.url.Config;
import com.yanq.liancar.util.BitmapUtil;
import com.yanq.liancar.util.ToastUtil;
import com.yanq.liancar.view.popupwindow.BasePopupWindow;

public class PopWinShare extends BasePopupWindow implements View.OnClickListener {

    private IWXAPI wxApi;
    private NestedScrollView scrollView;

    public PopWinShare(Context context, NestedScrollView scrollView) {
        super(context);
        this.scrollView = scrollView;
    }

    @Override
    public int layoutResId() {
        return R.layout.pop_win_share;
    }

    @Override
    public void init() {
        ((TextView) findViewById(R.id.share_wx)).setOnClickListener(this);
        ((TextView) findViewById(R.id.share_wxc)).setOnClickListener(this);
        wxApi = WXAPIFactory.createWXAPI(mContext, Config.WX_APP_ID, true);
        wxApi.registerApp(Config.WX_APP_ID);
    }

    @Override
    public void onClick(View view) {
        if (!wxApi.isWXAppInstalled()) {
            ToastUtil.show(mContext, "您还未安装微信客户端");
            return;
        }
        Bitmap bitmap = BitmapUtil.getBitmapByView(scrollView);
        if (bitmap != null) {
            switch (view.getId()) {
                case R.id.share_wx:
                    sharePicByFile(bitmap, System.currentTimeMillis() + "", "好友");
                    break;
                case R.id.share_wxc:
                    sharePicByFile(bitmap, System.currentTimeMillis() + "", "朋友圈");
                    break;
            }
        } else {
            ToastUtil.show(mContext, "图片为空");
        }
        myDismiss();
    }

    public void sharePicByFile(Bitmap bitmap, String tag, String info) {
//        if (!picFile.exists()) {return;}
//        Bitmap pic = BitmapFactory.decodeFile(picFile.toString());

        WXImageObject imageObject = new WXImageObject(bitmap);
        //这个构造方法中自动把传入的bitmap转化为2进制数据,或者你直接传入byte[]也行
        //注意传入的数据不能大于10M,开发文档上写的

        WXMediaMessage msg = new WXMediaMessage();  //这个对象是用来包裹发送信息的对象
        msg.mediaObject = imageObject;
        //msg.mediaObject实际上是个IMediaObject对象,
        //它有很多实现类,每一种实现类对应一种发送的信息,
        //比如WXTextObject对应发送的信息是文字,想要发送文字直接传入WXTextObject对象就行


        Bitmap thumbBitmap = Bitmap.createScaledBitmap(bitmap, 150, 150, true);

        msg.thumbData = BitmapUtil.bmpToByteArray(thumbBitmap, true);
        //在这设置缩略图
        //官方文档介绍这个bitmap不能超过32kb
        //如果一个像素是8bit的话换算成正方形的bitmap则边长不超过181像素,边长设置成150是比较保险的
        //或者使用msg.setThumbImage(thumbBitmap);省去自己转换二进制数据的过程
        //如果超过32kb则抛异常

        SendMessageToWX.Req req = new SendMessageToWX.Req();    //创建一个请求对象
        req.message = msg;  //把msg放入请求对象中
        if (info.equals("朋友圈")) {
            req.scene = SendMessageToWX.Req.WXSceneTimeline;    //设置发送到朋友圈
        } else {
            req.scene = SendMessageToWX.Req.WXSceneSession;   //设置发送给朋友
        }
        req.transaction = tag;  //这个tag要唯一,用于在回调中分辨是哪个分享请求
        boolean b = wxApi.sendReq(req);   //如果调用成功微信,会返回true
        Log.e("www", "==" + b);
    }
}